﻿/***************************************************************************
 * 文 件 名:   Test_UseTargetCam
 * 
 * 描    述:   Camera多目标切换管理工具，测试脚本
 * 
 * 版    本：  V1.1
 * 创 建 者：  京产肠饭、谭潇杰
 * 创建时间：  2023/5/9
 * 链   接：  https://gitee.com/JingChanChangFan/hk_-unity-tools
****************************************************************************/

using UnityEngine;
using QFramework;
using DG.Tweening;
using HKTools;
using UnityEngine.UI;

public class Test_UseTargetCam : HKTargetCam_BaseController
{
    [SerializeField] Transform testMoveNPC;
    [SerializeField] Text tips_Txt;

    void Start()
    {
        // 设置相机默认的moveSpeed和zoomSpeed
        this.SendCommand(new CMD_SetDefaultSpeed(2, 4));

        // 注册 开始切换 Target  事件
        this.RegisterEvent<Event_SwitchTargetBegin>(args =>
        {
            Debug.LogFormat("开始 切换至新目标，Target：{0}", args._targetEnum);
        }).UnRegisterWhenGameObjectDestroyed(gameObject);

        // 注册 完成切换 Target  事件
        this.RegisterEvent<Event_SwitchTargetEnd>(args =>
        {
            Debug.LogFormat("完成 切换至新目标，Target：{0}", args._targetEnum);
            tips_Txt.text = string.Format("当前Camera目标为：{0}", args._targetEnum);
        }).UnRegisterWhenGameObjectDestroyed(gameObject);
    }

    void Update()
    {
        // 相机切换至 RotTarget_01
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.RotTarget_01));
        }

        // 相机切换至 RotTarget_02，且切换后锁住相机
        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.RotTarget_02).SetCamLock());
        }

        // 相机切换至 RotTarget_03，切换后将相机的zoomSpeed设为1
        if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.RotTarget_03).SetZoomSpeed(1));
        }

        // 延时1s后，相机切换至 RotTarget_04，切换后将相机的zoomSpeed设为8
        if (Input.GetKeyDown(KeyCode.Alpha4))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.RotTarget_04).SetDelayTime(1).SetZoomSpeed(8));
        }

        // 相机切换至 AreaTarget_01
        if (Input.GetKeyDown(KeyCode.Alpha5))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.AreaTarget_01));
        }

        // 相机切换至 AreaTarget_02，切换后将相机的moveSpeed设为4，将zoomSpeed设为10
        if (Input.GetKeyDown(KeyCode.Alpha6))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.AreaTarget_02).SetMoveSpeed(4).SetZoomSpeed(10));
        }

        // 相机切换至 FollowTarget_01
        if (Input.GetKeyDown(KeyCode.Alpha7))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.FollowTarget_01));

            /*---------------------测试-----------------*/
            testMoveNPC.position = new Vector3(-15f, 1, 4.5f);
            testMoveNPC.DOMoveX(13f, 6f).SetEase(Ease.Linear).SetDelay(1f);
            /*------------------------------------------*/
        }

        // 相机切换至 RotTarget_01，使用闪现的方式
        if (Input.GetKeyDown(KeyCode.Q))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.RotTarget_01).SetUsingFlash());
        }

        // 相机切换至 RotTarget_02，使用闪现的方式，且切换后锁住相机
        if (Input.GetKeyDown(KeyCode.W))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.RotTarget_02).SetUsingFlash().SetCamLock());
        }

        // 相机切换至 RotTarget_03，使用闪现的方式，切换后将相机的zoomSpeed设为1
        if (Input.GetKeyDown(KeyCode.E))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.RotTarget_03).SetUsingFlash().SetZoomSpeed(1));
        }

        // 延时1s后，相机切换至 RotTarget_04，使用闪现的方式，切换后将相机的zoomSpeed设为8
        if (Input.GetKeyDown(KeyCode.R))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.RotTarget_04).SetUsingFlash(false).SetDelayTime(1).SetZoomSpeed(8));
        }

        // 相机切换至 AreaTarget_01，使用闪现的方式
        if (Input.GetKeyDown(KeyCode.T))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.AreaTarget_01).SetUsingFlash());
        }

        // 相机切换至 AreaTarget_02，使用闪现的方式，切换后将相机的moveSpeed设为4，将zoomSpeed设为10
        if (Input.GetKeyDown(KeyCode.Y))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.AreaTarget_02).SetUsingFlash(true).SetMoveSpeed(4).SetZoomSpeed(10));
        }

        // 相机切换至 FollowTarget_01，使用闪现的方式
        if (Input.GetKeyDown(KeyCode.U))
        {
            this.SendCommand(new CMD_ChangeCamTarget(HK_TargetEnum.FollowTarget_01).SetUsingFlash(true));

            /*---------------------测试-----------------*/
            testMoveNPC.position = new Vector3(-15f, 1, 4.5f);
            testMoveNPC.DOMoveX(13f, 6f).SetEase(Ease.Linear).SetDelay(1f);
            /*------------------------------------------*/
        }
    }
}
